오 S 하드웨어, 소프트웨어, OS, Linux를 게임기에서 비유해 보았다 게임기로 비유한다면 게임기 본체나 컨트롤러 등 눈에 보이는 것. 이들만으로는 게임은 놀 수 없는 것처럼 PC도 소프트웨어가 없으면 그냥 상자입니다 (최근의 게임기는 온라인 통신이라면 무료로 여러가지 놀 수 있습니다만 거기는 놓을 때입니다) 게임기로 비유한다면 게임 소프트(카세트)의 내용. PC를 움직이는 프로그램(지시)입니다. PC 자체나 주변기기 등과 같이 눈에 보이는 기기를 하드웨어라고 ... 하드웨어오 S소프트웨어리눅스 OS를 자작 해 보았다! 요즘 너무 추워서 진짜로 동사할 것 같은 dangomushi입니다. 진짜로 춥다. 어쨌든, 우선 이 기사는 완전히 스스로 만든 OS가 아닌 것 아직 개선의 여지가 있다 중학생이 만든 것 의 전제를 근거로 한 것이 됩니다. 또한 코드와 파일이 많기 때문에 샘플 코드는 없습니다. Github에 올리면 추가합니다. 제작 기간은 1개월 조금 정도입니다. 이번에 자작한 OS는 자작을 좋아한다면 누구나... 자작 OSC오 S자작 OS에 대해서 2 OS는 오퍼레이션 시스템(영어: Operation System)의 약자이며, PC를 움직이는데 꼭 필요한 기본 소프트웨어입니다. 하드웨어와 어플리케이션 소프트웨어의 사이를 가지고 있는 없어서는 안되는 존재입니다. ① OS는 통상 HDD(하드 디스크)에 인스톨되어 있어 당연하지만 전원이 OFF일 때는 움직이지 않습니다. 전원이 ON이 되면, 하드웨어에 있는 BIOS 가 일하고 OS에 「일어나!... 오 S Homebrew 도입 방법 Homebrew에서는 애플(또는 Linux 시스템)이 제공하지 않는 소프트웨어나 확장 기능의 인스톨을 할 수 있는 것입니다. Git (버전 관리 시스템)과 Ruby로 제작되었습니다. Homebrew는 MacOS 환경에서 소위 디팩트 표준 패키지 관리자입니다. 여기를 사용하면 쉽게 Composer를 설치할 수 있습니다. OS 패키지 관리자 Windows Chocolatey MacOS Homeb... 오 SPHPhomebrew Pi Imager에서 SD 카드가 사라지는 마법 라즈파이의 이미저를 사용해 OS를 넣으려고 했던 곳, 에러가 나오고 멈췄다고 생각하면 익스플로러에 SD카드가 표시되지 않게 되어 버렸습니다. 그 일에 대해 정리했습니다. 이미지를 구울 때 도중에 오류 등으로 멈췄을 때 발생합니다. 내 PC에서만 시도하고 있기 때문에, 어느 정도의 빈도로 일어나고 있는지 등은 불명합니다. ① 우선, 화면 우측 하단의 Window 버튼을 오른쪽 클릭하여 「디스크... RaspberryPi오 Sraspbian 【SRE】 네 메모리는 전혀 자세하지 않잖아 이상은 무한한 용량을 갖추고 있으며 즉시 액세스 할 수있는 것이 바람직합니다. 하지만 현실의 메모리는 몇 계층으로 되어 있어 깊게 갈수록 메모리 용량이 커지고 읽기가 느려집니다. 가상 주소 액세스 TLB에 액세스 (해당 물리적 주소가있는 경우 액세스) MMU의 페이지 테이블을 기반으로 가상 주소에서 물리적 주소로 변환하고 물리적 주소에 액세스 CPU에 데이터 전달 아래가 전체를 잡는데 최고입... 오 SSRE 【SRE】CPU, 메모리, I/O에 대해서 감시 업무를 실시함에 있어서, 「CPU, 메모리, I/O」를 확인할 필요가 있다, 라고 자주 기사로 쓰여지고 있지만, 왜인지 모르기 때문에, 원래 CPU는 무엇? 원래 계산기가 어떻게 구성되는가 하면, 연산 장치와 메모리가 됩니다. 기본적으로 다음 세 가지입니다. CPU (연산 장치) 메모리 세 가지 관계는 다음과 같으며 버스를 통해 각각 연결되어 있습니다. CPU가 중심이 되어 움직이고 있... 오 SSRE OS의 역사 정리 정리 Unix, Linux, Windows, MacOS ···. 리눅스 장사할 기사가되었습니다. 현재의 컴퓨터는 OS가 통역으로서 다양한 어플리케이션을 움직이고 있다. OS가 개발되기 전에는 어플리케이션마다 컴퓨터가 준비되어 있었다. 예를 들면 계산용이라면 계산용의 컴퓨터, 문장 작성이라면 문장 작성용의 컴퓨터(워프라라든지)라고 하는 느낌. 거기서 개발된 것이 OS(Operation System)... 오 S리눅스 채팅으로 명령을 주고받은 참극이 일어난 이야기 서버 관리를하고 조금 어리석은 적이 있었기 때문에 당연하지만 채팅에서 코드 스 니펫이나 명령을 보낼 때는 제대로 `(バッククオート)를 사용합시다. 그렇지 않으면 기호가 Markdown으로 인식되어 힘들 수 있습니다. ※기법에 따라서는 ~(チルダ) 하지만 OK 당연하지만 실행하는 OS의 명령은 실행 전에 확실히 내용을 확인하자 당연하지만 로그 로테이션은 하자 부내에서 이용하고 있는, Jira ... chat리눅스터미널오 SMarkdown macOS Catalina로 업그레이드하면 "사용 가능한 공간이 부족합니다"오류가 발생한 경우 해결 방법 macOS를 Mojave에서 Catalina로 업그레이드하면 컴퓨터에 macOS를 설치할 수 없습니다. 라고 나와 설치가 도중에 멈춰 버렸다. 다시 같은 메시지로 OS 부팅할 수 없는 상태. MAC 지원팀에 문의하면 다음 단계를 알려주고 그 절차를 수행하면 부활할 수 있었으므로, 그 순서를 메모. 데이터가 없는 비어 있는 외장 HDD 준비(USB 타입) mac를 시작할 때 Option + C... Mac업그레이드Mojave오 S카탈리나 【공부용】 OS와 Linux에 대해 초보자 관점에서 「분명히 다르다」라고 하는 것이 있으면, 지적해 주시면 다행입니다. OS는 Operating System(운영 체제)의 약자로, 인간이 컴퓨터를 사용하는데 있어서 편리하게 해 주는 것입니다. 스마트폰으로 말하면 iPhone에서는 iOS, Android에서는 AndroidOS가 사용되고 있습니다. PC로 말하면, Windows에서는 WindowsOS, Mac에서는 macOS가 사용되고 있습니다... 초보자오 S리눅스 타이머 인터럽트 (재) 이전에 타이머 인터럽트가 실현되었지만 인터럽트 전, 인터럽트 처리 및 인터럽트 후 컨텍스트 정보는 전혀 고려하지 않았습니다. 즉, 인터럽트가 들어간 후 인터럽트 처리로 레지스터가 파괴 될 가능성이있었습니다. 이전의 예에서는, 거의 타이머 인터럽트의 처리 밖에 없었기 때문에 파괴되는 일도 없고, 파손된 곳에서 어떻게 하지 않았지만, 향후 이 타이머 인터럽트로 thread를 전환하는 것을 생각하... AVRArduino오 S임베디드 OS 오늘 '좋아하는 Qiita 기사'를 선택했습니다. Qiita Jobs에 등록하기 위해, 좋아하는 Qiita 기사 를 선택할 필요가 있었다. 지금 왜 CPU 에뮬레이터를 자작하려고 했습니까? 좋아하는 기사로 선택한 이유 이 기사는 자신이 존경하는 다음 사례와 함께 현재 작업의 방식을 보여주는 것이라고 느낍니다. 혼다 신야 TOPPERS/JSP SH판 타케우치 료스케 교육용 이식 Monitor task 읍 중 마사키 Pizza Factory(E... CPUTOPPERSQiita오 S 메모:「30일로 할 수 있다! OS 자작 입문」 28일째 1) alloca(1) - 소수 생성 프로그램 2개 추가 (1000과 10000까지) - stack 은 10000 개분 allocate 할 수 없었다 - 물론 malloc 가능 2) alloca(2) - __alloca 함수 만들기 - 스택에 EAX 바이트 공간 확보 - ECX, EDX, EBX, EBP, ESI, EDI 값을 변경하지 마십시오. 3) 파일 API - open,seek,rea... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」 25일째 1) BEEP 사운드 - OUT 0x43, AL (0xb6) - 옛날의 qemu 는 BEEP 대응하고 있지 않은 것 같습니다만, 지금은 -soundhw pcspk 로 보통으로 들리는군요. 굉장한 2) 색을 늘리자 - 216을 더하여 231 색으로 3) 색을 늘리자 2 - 애플리케이션 측 코드 수정 - 좋은 느낌으로 보였습니다. 4) 창의 초기 위치 - 중간에 표시하도록 5) 콘솔을 늘리자 1... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」 21일째 1) 문자열 표시 API를 이번에야 - 이전 hello2는 CS의 기반이 없었기 때문에 제대로 작동했습니다. - 0xfe8이라는 특정 장소를 취하는 방법으로 2) 응용 프로그램을 C 언어로 만들고 싶습니다. - 애플리케이션용 API 만들기 C 언어로도 프로그램 C로 컴파일 한 내용은 그대로 사용할 수 없으므로 처음 6 바이트를 E8 16 00 00 00 CB로 다시 씁니다 3) OS를 지키자... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」18일째 1) 커서 점멸 제어 1 - 대상 창만 커서를 깜박입니다. - 일단 task_a 창만 2) 커서 점멸 제어 2 - 역시 미묘하지만, 어느 쪽도 대상의 윈도우만 커서 점멸하게 되었다 - (왜 탭 조작에 콘솔 커서를 조작하고 있습니다) 3) Enter 키 대응 - 지금 행의 커서를 스베이스로 지워 - y += 16 하고 '>' 를 쓴다 4) 스크롤 대응 - 기존 7행을 복사하여 마지막 행을 빈 ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」15일째 1) 태스크 스위치에 도전 - TSS(작업 상태 세그먼트) - JMP는 내부에서는 EIP를 재기록할 수 있는 것 첫 번째 줄은 작업 스위치로 다시 쓸 수 없습니다 (backlink가 변경 될 수 있음) ldtr, iomap도 마찬가지이지만, 괜찮은 것은 아닙니다. ldtr 은 0, iomap 은 0x40000000 에 일단 둔다 작업 스위치는 JMP 명령을 사용합니다. Near(EIP) 및 ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」14일째 1) 또한 성능을 측정해 본다 (a ~ c) - 타이머 490개 만들기 - CPU의 JMP 명령은 날아가는 주소에 따라 실행 클럭 수가 달라진다는 것 - 어셈블리 쓰면 낫는 것 같지만 이번에는하지 않는 방향 2) 고해상도로 하자 (d) - 640x480으로 설정 - VESA 주변 설명 - qemu-system-i386 위는 움직이지 않았다. 새까만 3) 고해상도로 하자 2 (e) - VBE ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」12일째 1) 타이머를 사용합시다 - PIT (Programmable Interval Timer) 있음 inthandler20 및 asm_inthandler20 만들기 set_gatedesc에서 idt + 0x20 추가 2) 시간을 걸어 보자 - counter 가 들어 있는 구조체를 만들어 inthandler20 내에서 카운트 업해 간다 - 모든 기계에서 동일한 속도로 계산됩니다. - counter ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」11일째 1) 더 마우스 - 화면 밖으로 마우스 등을 이동하고 싶지만 작동하지 않는지 확인 2) 화면외 서포트 - sheet_refreshsub 에 화면 밖의 경우는 안에 들어가도록 수정, < 0 을 0 으로 하면 3) shtctl 지정 생략 - shtctl 참조를 sheet 안에 갖도록 변경 - 동작적으로는 특별히 변화 없음 4) 창 만들기 - 닫기 버튼과 제목이 있습니다. 좋아요. 5) 마우스를 ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」10일째 1) 메모리 관리 계속 - memory.c로 잘라내기 - 1바이트 단위가 아닌 4k 단위로 Allocate 한다 - 0x1000 자르기, size & 0xfffff000; - 0x1000 반올림, (size & 0xfffff000) + 0x1000; 단 size & 0xfff가 0이 아닌 경우에만 - 또는 (size + 0xfff) & 0xfffff000; 동일하기 때문에 이것을 채택 2) ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」8일째 1) 마우스로부터의 데이터 4 바이트를 읽어내기 위해, 스테이트 머신적인 것을 만든다 - phase1(0xfa) to phase4, 정렬되면 3바이트 표시 2) 마우스의 데이터를 디코드하는 함수를 추가하고, phase 판정은 그 함수 내에서 한다. - enable_mouse 에 phase 의 초기화 0 으로 한다 - 3바이트 버퍼와 phase를 가지는 구조체를 이용 3) 마우스 해독 - 버튼... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」7일째 - 포트 0x60에서 획득 - PIC0_ICW2에 0x61을 보내면 IRQ1 접수 완료가 된다. - 0x61의 1은 IRQ1을 나타내고, IRQ3이면 0x63 (0x60 + IRQ 번호) 키코드를 화면에서 볼 수 있다. 누를 때나 누른 후에도 다른 키 코드가 나온다. - 키 입력이있을 때마다 화면을 그리는 것은 느립니다. - 키 데이터를 확인하고 화면 그리기 - Ctrl 등의 키는 키 코드가... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」 6일째 - 세그먼트 디스크립터는 8 바이트 구조 - 세그먼트 주소의 이야기 - base는 4바이트, lower 2바이트, mid 1바이트, high 1바이트로 나누어져 있다. - limit_low 에 16 bit, limit_high 에 4bit 와 속성 4bit 가 혼합되어 있다 - xxxx0000xxxxxxxx, 0000 은 limit_high 의 일부, 최초의 xxxx 는 GD00, Gbit ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」5일째 1) bootinfo 정보와 화면 정보 포인트를 사용하여 받기 외형은 특히 변화 없음 2) 구조체 사용 binfo = (struct BOOTINFO *) 0x0ff0;//구조체 포인터로 캐스트 xsize = (*binfo).scrnx;//(* binfo) 구조체 포인터에서 필드 값을 검색합니다 구조체 필드 액세스 binfo. 및 구조체 포인터 필드 (*binfo). 액세스 설명 4) 문자의 ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」4일째 C 언어에서 메모리 쓰기 어셈블리에 write_mem8이라는 함수를 작성하고 C에서 호출하는 형식 16bit 모드에서는 메모리 인덱스는 [CX], [SP]는 할 수 없었지만, 32bit 모드에서는 [ECX], [ESP] 등도 사용할 수 있다는 것. EAX, ECX, EDX는 자유롭게 사용할 수 있다. 8086, 80186, 286은 16bit CPU, 386, Pentium ..은 32bit... 오 S30일에 할 수 있다! OS 자작 입문
하드웨어, 소프트웨어, OS, Linux를 게임기에서 비유해 보았다 게임기로 비유한다면 게임기 본체나 컨트롤러 등 눈에 보이는 것. 이들만으로는 게임은 놀 수 없는 것처럼 PC도 소프트웨어가 없으면 그냥 상자입니다 (최근의 게임기는 온라인 통신이라면 무료로 여러가지 놀 수 있습니다만 거기는 놓을 때입니다) 게임기로 비유한다면 게임 소프트(카세트)의 내용. PC를 움직이는 프로그램(지시)입니다. PC 자체나 주변기기 등과 같이 눈에 보이는 기기를 하드웨어라고 ... 하드웨어오 S소프트웨어리눅스 OS를 자작 해 보았다! 요즘 너무 추워서 진짜로 동사할 것 같은 dangomushi입니다. 진짜로 춥다. 어쨌든, 우선 이 기사는 완전히 스스로 만든 OS가 아닌 것 아직 개선의 여지가 있다 중학생이 만든 것 의 전제를 근거로 한 것이 됩니다. 또한 코드와 파일이 많기 때문에 샘플 코드는 없습니다. Github에 올리면 추가합니다. 제작 기간은 1개월 조금 정도입니다. 이번에 자작한 OS는 자작을 좋아한다면 누구나... 자작 OSC오 S자작 OS에 대해서 2 OS는 오퍼레이션 시스템(영어: Operation System)의 약자이며, PC를 움직이는데 꼭 필요한 기본 소프트웨어입니다. 하드웨어와 어플리케이션 소프트웨어의 사이를 가지고 있는 없어서는 안되는 존재입니다. ① OS는 통상 HDD(하드 디스크)에 인스톨되어 있어 당연하지만 전원이 OFF일 때는 움직이지 않습니다. 전원이 ON이 되면, 하드웨어에 있는 BIOS 가 일하고 OS에 「일어나!... 오 S Homebrew 도입 방법 Homebrew에서는 애플(또는 Linux 시스템)이 제공하지 않는 소프트웨어나 확장 기능의 인스톨을 할 수 있는 것입니다. Git (버전 관리 시스템)과 Ruby로 제작되었습니다. Homebrew는 MacOS 환경에서 소위 디팩트 표준 패키지 관리자입니다. 여기를 사용하면 쉽게 Composer를 설치할 수 있습니다. OS 패키지 관리자 Windows Chocolatey MacOS Homeb... 오 SPHPhomebrew Pi Imager에서 SD 카드가 사라지는 마법 라즈파이의 이미저를 사용해 OS를 넣으려고 했던 곳, 에러가 나오고 멈췄다고 생각하면 익스플로러에 SD카드가 표시되지 않게 되어 버렸습니다. 그 일에 대해 정리했습니다. 이미지를 구울 때 도중에 오류 등으로 멈췄을 때 발생합니다. 내 PC에서만 시도하고 있기 때문에, 어느 정도의 빈도로 일어나고 있는지 등은 불명합니다. ① 우선, 화면 우측 하단의 Window 버튼을 오른쪽 클릭하여 「디스크... RaspberryPi오 Sraspbian 【SRE】 네 메모리는 전혀 자세하지 않잖아 이상은 무한한 용량을 갖추고 있으며 즉시 액세스 할 수있는 것이 바람직합니다. 하지만 현실의 메모리는 몇 계층으로 되어 있어 깊게 갈수록 메모리 용량이 커지고 읽기가 느려집니다. 가상 주소 액세스 TLB에 액세스 (해당 물리적 주소가있는 경우 액세스) MMU의 페이지 테이블을 기반으로 가상 주소에서 물리적 주소로 변환하고 물리적 주소에 액세스 CPU에 데이터 전달 아래가 전체를 잡는데 최고입... 오 SSRE 【SRE】CPU, 메모리, I/O에 대해서 감시 업무를 실시함에 있어서, 「CPU, 메모리, I/O」를 확인할 필요가 있다, 라고 자주 기사로 쓰여지고 있지만, 왜인지 모르기 때문에, 원래 CPU는 무엇? 원래 계산기가 어떻게 구성되는가 하면, 연산 장치와 메모리가 됩니다. 기본적으로 다음 세 가지입니다. CPU (연산 장치) 메모리 세 가지 관계는 다음과 같으며 버스를 통해 각각 연결되어 있습니다. CPU가 중심이 되어 움직이고 있... 오 SSRE OS의 역사 정리 정리 Unix, Linux, Windows, MacOS ···. 리눅스 장사할 기사가되었습니다. 현재의 컴퓨터는 OS가 통역으로서 다양한 어플리케이션을 움직이고 있다. OS가 개발되기 전에는 어플리케이션마다 컴퓨터가 준비되어 있었다. 예를 들면 계산용이라면 계산용의 컴퓨터, 문장 작성이라면 문장 작성용의 컴퓨터(워프라라든지)라고 하는 느낌. 거기서 개발된 것이 OS(Operation System)... 오 S리눅스 채팅으로 명령을 주고받은 참극이 일어난 이야기 서버 관리를하고 조금 어리석은 적이 있었기 때문에 당연하지만 채팅에서 코드 스 니펫이나 명령을 보낼 때는 제대로 `(バッククオート)를 사용합시다. 그렇지 않으면 기호가 Markdown으로 인식되어 힘들 수 있습니다. ※기법에 따라서는 ~(チルダ) 하지만 OK 당연하지만 실행하는 OS의 명령은 실행 전에 확실히 내용을 확인하자 당연하지만 로그 로테이션은 하자 부내에서 이용하고 있는, Jira ... chat리눅스터미널오 SMarkdown macOS Catalina로 업그레이드하면 "사용 가능한 공간이 부족합니다"오류가 발생한 경우 해결 방법 macOS를 Mojave에서 Catalina로 업그레이드하면 컴퓨터에 macOS를 설치할 수 없습니다. 라고 나와 설치가 도중에 멈춰 버렸다. 다시 같은 메시지로 OS 부팅할 수 없는 상태. MAC 지원팀에 문의하면 다음 단계를 알려주고 그 절차를 수행하면 부활할 수 있었으므로, 그 순서를 메모. 데이터가 없는 비어 있는 외장 HDD 준비(USB 타입) mac를 시작할 때 Option + C... Mac업그레이드Mojave오 S카탈리나 【공부용】 OS와 Linux에 대해 초보자 관점에서 「분명히 다르다」라고 하는 것이 있으면, 지적해 주시면 다행입니다. OS는 Operating System(운영 체제)의 약자로, 인간이 컴퓨터를 사용하는데 있어서 편리하게 해 주는 것입니다. 스마트폰으로 말하면 iPhone에서는 iOS, Android에서는 AndroidOS가 사용되고 있습니다. PC로 말하면, Windows에서는 WindowsOS, Mac에서는 macOS가 사용되고 있습니다... 초보자오 S리눅스 타이머 인터럽트 (재) 이전에 타이머 인터럽트가 실현되었지만 인터럽트 전, 인터럽트 처리 및 인터럽트 후 컨텍스트 정보는 전혀 고려하지 않았습니다. 즉, 인터럽트가 들어간 후 인터럽트 처리로 레지스터가 파괴 될 가능성이있었습니다. 이전의 예에서는, 거의 타이머 인터럽트의 처리 밖에 없었기 때문에 파괴되는 일도 없고, 파손된 곳에서 어떻게 하지 않았지만, 향후 이 타이머 인터럽트로 thread를 전환하는 것을 생각하... AVRArduino오 S임베디드 OS 오늘 '좋아하는 Qiita 기사'를 선택했습니다. Qiita Jobs에 등록하기 위해, 좋아하는 Qiita 기사 를 선택할 필요가 있었다. 지금 왜 CPU 에뮬레이터를 자작하려고 했습니까? 좋아하는 기사로 선택한 이유 이 기사는 자신이 존경하는 다음 사례와 함께 현재 작업의 방식을 보여주는 것이라고 느낍니다. 혼다 신야 TOPPERS/JSP SH판 타케우치 료스케 교육용 이식 Monitor task 읍 중 마사키 Pizza Factory(E... CPUTOPPERSQiita오 S 메모:「30일로 할 수 있다! OS 자작 입문」 28일째 1) alloca(1) - 소수 생성 프로그램 2개 추가 (1000과 10000까지) - stack 은 10000 개분 allocate 할 수 없었다 - 물론 malloc 가능 2) alloca(2) - __alloca 함수 만들기 - 스택에 EAX 바이트 공간 확보 - ECX, EDX, EBX, EBP, ESI, EDI 값을 변경하지 마십시오. 3) 파일 API - open,seek,rea... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」 25일째 1) BEEP 사운드 - OUT 0x43, AL (0xb6) - 옛날의 qemu 는 BEEP 대응하고 있지 않은 것 같습니다만, 지금은 -soundhw pcspk 로 보통으로 들리는군요. 굉장한 2) 색을 늘리자 - 216을 더하여 231 색으로 3) 색을 늘리자 2 - 애플리케이션 측 코드 수정 - 좋은 느낌으로 보였습니다. 4) 창의 초기 위치 - 중간에 표시하도록 5) 콘솔을 늘리자 1... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」 21일째 1) 문자열 표시 API를 이번에야 - 이전 hello2는 CS의 기반이 없었기 때문에 제대로 작동했습니다. - 0xfe8이라는 특정 장소를 취하는 방법으로 2) 응용 프로그램을 C 언어로 만들고 싶습니다. - 애플리케이션용 API 만들기 C 언어로도 프로그램 C로 컴파일 한 내용은 그대로 사용할 수 없으므로 처음 6 바이트를 E8 16 00 00 00 CB로 다시 씁니다 3) OS를 지키자... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」18일째 1) 커서 점멸 제어 1 - 대상 창만 커서를 깜박입니다. - 일단 task_a 창만 2) 커서 점멸 제어 2 - 역시 미묘하지만, 어느 쪽도 대상의 윈도우만 커서 점멸하게 되었다 - (왜 탭 조작에 콘솔 커서를 조작하고 있습니다) 3) Enter 키 대응 - 지금 행의 커서를 스베이스로 지워 - y += 16 하고 '>' 를 쓴다 4) 스크롤 대응 - 기존 7행을 복사하여 마지막 행을 빈 ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」15일째 1) 태스크 스위치에 도전 - TSS(작업 상태 세그먼트) - JMP는 내부에서는 EIP를 재기록할 수 있는 것 첫 번째 줄은 작업 스위치로 다시 쓸 수 없습니다 (backlink가 변경 될 수 있음) ldtr, iomap도 마찬가지이지만, 괜찮은 것은 아닙니다. ldtr 은 0, iomap 은 0x40000000 에 일단 둔다 작업 스위치는 JMP 명령을 사용합니다. Near(EIP) 및 ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」14일째 1) 또한 성능을 측정해 본다 (a ~ c) - 타이머 490개 만들기 - CPU의 JMP 명령은 날아가는 주소에 따라 실행 클럭 수가 달라진다는 것 - 어셈블리 쓰면 낫는 것 같지만 이번에는하지 않는 방향 2) 고해상도로 하자 (d) - 640x480으로 설정 - VESA 주변 설명 - qemu-system-i386 위는 움직이지 않았다. 새까만 3) 고해상도로 하자 2 (e) - VBE ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」12일째 1) 타이머를 사용합시다 - PIT (Programmable Interval Timer) 있음 inthandler20 및 asm_inthandler20 만들기 set_gatedesc에서 idt + 0x20 추가 2) 시간을 걸어 보자 - counter 가 들어 있는 구조체를 만들어 inthandler20 내에서 카운트 업해 간다 - 모든 기계에서 동일한 속도로 계산됩니다. - counter ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」11일째 1) 더 마우스 - 화면 밖으로 마우스 등을 이동하고 싶지만 작동하지 않는지 확인 2) 화면외 서포트 - sheet_refreshsub 에 화면 밖의 경우는 안에 들어가도록 수정, < 0 을 0 으로 하면 3) shtctl 지정 생략 - shtctl 참조를 sheet 안에 갖도록 변경 - 동작적으로는 특별히 변화 없음 4) 창 만들기 - 닫기 버튼과 제목이 있습니다. 좋아요. 5) 마우스를 ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」10일째 1) 메모리 관리 계속 - memory.c로 잘라내기 - 1바이트 단위가 아닌 4k 단위로 Allocate 한다 - 0x1000 자르기, size & 0xfffff000; - 0x1000 반올림, (size & 0xfffff000) + 0x1000; 단 size & 0xfff가 0이 아닌 경우에만 - 또는 (size + 0xfff) & 0xfffff000; 동일하기 때문에 이것을 채택 2) ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」8일째 1) 마우스로부터의 데이터 4 바이트를 읽어내기 위해, 스테이트 머신적인 것을 만든다 - phase1(0xfa) to phase4, 정렬되면 3바이트 표시 2) 마우스의 데이터를 디코드하는 함수를 추가하고, phase 판정은 그 함수 내에서 한다. - enable_mouse 에 phase 의 초기화 0 으로 한다 - 3바이트 버퍼와 phase를 가지는 구조체를 이용 3) 마우스 해독 - 버튼... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」7일째 - 포트 0x60에서 획득 - PIC0_ICW2에 0x61을 보내면 IRQ1 접수 완료가 된다. - 0x61의 1은 IRQ1을 나타내고, IRQ3이면 0x63 (0x60 + IRQ 번호) 키코드를 화면에서 볼 수 있다. 누를 때나 누른 후에도 다른 키 코드가 나온다. - 키 입력이있을 때마다 화면을 그리는 것은 느립니다. - 키 데이터를 확인하고 화면 그리기 - Ctrl 등의 키는 키 코드가... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」 6일째 - 세그먼트 디스크립터는 8 바이트 구조 - 세그먼트 주소의 이야기 - base는 4바이트, lower 2바이트, mid 1바이트, high 1바이트로 나누어져 있다. - limit_low 에 16 bit, limit_high 에 4bit 와 속성 4bit 가 혼합되어 있다 - xxxx0000xxxxxxxx, 0000 은 limit_high 의 일부, 최초의 xxxx 는 GD00, Gbit ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」5일째 1) bootinfo 정보와 화면 정보 포인트를 사용하여 받기 외형은 특히 변화 없음 2) 구조체 사용 binfo = (struct BOOTINFO *) 0x0ff0;//구조체 포인터로 캐스트 xsize = (*binfo).scrnx;//(* binfo) 구조체 포인터에서 필드 값을 검색합니다 구조체 필드 액세스 binfo. 및 구조체 포인터 필드 (*binfo). 액세스 설명 4) 문자의 ... 오 S30일에 할 수 있다! OS 자작 입문 메모:「30일로 할 수 있다! OS 자작 입문」4일째 C 언어에서 메모리 쓰기 어셈블리에 write_mem8이라는 함수를 작성하고 C에서 호출하는 형식 16bit 모드에서는 메모리 인덱스는 [CX], [SP]는 할 수 없었지만, 32bit 모드에서는 [ECX], [ESP] 등도 사용할 수 있다는 것. EAX, ECX, EDX는 자유롭게 사용할 수 있다. 8086, 80186, 286은 16bit CPU, 386, Pentium ..은 32bit... 오 S30일에 할 수 있다! OS 자작 입문